####################################################################################################
### Title: People Consistently View Elections and Civil Liberties as Key Components of Democracy ###
### Content: Cleaning the Indian dataset                                                         ###
### Date: August 24, 2024                                                                        ###
####################################################################################################

### Set-up ----
## Clean the working environment and set the working directory
rm(list = ls())
setwd("~/Desktop/Science_Replication/data_cleaning")

## Install the cjdata package (if not yet installed)
# library(devtools)  # version 2.4.3
# install_github(repo = "yhoriuchi/cjdata")

## Load the required packages
library(tidyverse) # version 2.0.0
library(cjdata)    # version 0.1.0

## Read the raw dataset
df <- read_Qualtrics("raw_IN.csv")

### Data cleaning ----
## Recode variables of respondent characteristics
# Minority status (1 = minority; 0 = otherwise)
df <- df %>% mutate(minority_bin = case_when(
  minority == "हाँ" ~ 1,
  minority == "नहीं" | minority == "निश्चित नहीं" ~ 0
))
df$minority_bin <- factor(df$minority_bin, 0:1, c("Non-Minority", "Minority"))
table(df$minority_bin)

# Gender (1 = female; 0 = male)
df <- df %>% rename(gender5 = gender)
df <- df %>% mutate(gender_bin = case_when(
  gender5 == "महिला" ~ 1,
  gender5 == "पुरुष" ~ 0
))
df$gender_bin <- factor(df$gender_bin, 0:1, c("Male", "Female"))
table(df$gender_bin)

# Self-reported political ideology (1 = right; 0 = left)
df <- df %>% mutate(ideo_bin = case_when(
  political == "पूर्ण रूप से लेफ्ट" |
    political == "मध्यम रूप से लेफ्ट" |
    political == "थोड़े से लेफ्ट" ~ 0,
  political == "पूर्ण रूप से राइट" |
    political == "कुछ हद तक राइट" |
    political == "मध्यम रूप से राइट" ~ 1
))
df$ideo_bin <- factor(df$ideo_bin, 0:1, c("Left", "Right"))
table(df$ideo_bin)

# Education (1 = college; 0 = no college)
df <- df %>% mutate(edu_bin = case_when(
  edu == "हाई स्कूल से कम" |
    edu == "हाई स्कूल के समकक्ष" |
    edu == "असोशीएट डिग्री (AA)" |
    edu == "कोई कॉलेज, कोई डिग्री नहीं" ~ 0,
  edu == "स्नातक की डिग्री/चार-साल की डिग्री (BB, BS, BBA)" |
    edu == "एडवांस्ड डिग्री (MA, MS, MBA, PHD, JD, MD, आदि)" ~ 1
))
df$edu_bin <- factor(df$edu_bin, 0:1, c("No College", "College"))
table(df$edu_bin)

# Geopolitical alignment (1 = pro-China; 0 = pro-US)
df <- df %>% mutate(pro_china = case_when(
  china_us1 == "शायद संयुक्त राज्य अमेरिका को पसंद करते हैं" |
    china_us1 == "निश्चित रूप से संयुक्त राज्य अमेरिका को पसंद करते हैं" ~ 0,
  china_us1 == "शायद चीन को पसंद करते हैं" |
    china_us1 == "निश्चित रूप से चीन को पसंद करते हैं" ~ 1
))
df$pro_china <- factor(df$pro_china, 0:1 , c("Pro-US", "Pro-China"))
table(df$pro_china)

## Subset and reshape dataset into wide format that each row is a distinct conjoint task
df$Q1.1 <- ifelse(df$Q1.1 == "देश ए", "Country A", "Country B")
df$Q1.5 <- ifelse(df$Q1.5 == "देश ए", "Country A", "Country B")
df$Q1.9 <- ifelse(df$Q1.9 == "देश ए", "Country A", "Country B")
df_cj <- cjdata::reshape_conjoint(df, ResponseId, paste0("Q1.", seq(from = 1, to = 9, by = 4)))

## Rename the variables
df_cj <- df_cj %>% 
  rename(econ = "अमीरों और गरीबों की आर्थिक स्थिति...",
         populist = "नीतियाँ बनाते समय राजनीतिज्ञ...",
         direct = "लोग नीतिगत फैसलों पर सीधे वोट देते हैं...",
         civil = "नागरिकों की व्यक्तिगत स्वतंत्रता, जैसे भाषण, धर्म और जनसभा की स्वतंत्रता…",
         gender = "पुरुषों और महिलाओं के अधिकार ... हैं",
         expert = "स्वतंत्र, गैर-निर्वाचित विशेषज्ञों का ...होता है",
         obedient = "जब नागरिक अपनी सरकार की नीतियों को नापसंद करते हैं …",
         election = "इस देश में राजनीतिक नेतृत्व के लिए चुनाव...",
         leader = "निर्णय लेते समय, देश के लीडर...")

## Reorder the factors
# Electoral democracy
df_cj$election <- 
  factor(df_cj$election, 
         levels = c("नही हुए या गैर-मौजूद", "उस राजनीतिक समूह के पक्ष में पक्षपाती जो वर्तमान में सत्ता पर काबिज है", "विभिन्न राजनीतिक समूहों द्वारा स्वतंत्र रूप से और निष्पक्ष रूप से चुनाव लड़ा"), 
         labels = c("Elections are not held", "Elections are biased", "Elections are free and fair"))

# Liberal democracy
df_cj$civil <- 
  factor(df_cj$civil, 
         levels = c("कानून द्वारा बिल्कुल संरक्षित नहीं", "कानून द्वारा कमजोर रूप से संरक्षित", "कानून द्वारा सशक्त रूप से संरक्षित"), 
         labels = c("Civil liberties are not at all protected", "Civil liberties are weakly protected", "Civil liberties are strongly protected"))

# Institutional democracy
df_cj$leader <- 
  factor(df_cj$leader, 
         levels = c("लगभग हमेशा विधायिका और अदालतों के अधिकार को दरकिनार कर सकते हैं", "कभी-कभी विधायिका और अदालतों के अधिकार को दरकिनार कर सकते हैं", "विधायिका और अदालतों के अधिकार का सम्मान करना चाहिए"), 
         labels = c("Leader is weakly constrained", "Leader is somewhat constrained", "Leader is highly constrained"))

# Populist democracy
df_cj$populist <- 
  factor(df_cj$populist, 
         levels = c("शायद ही कभी उस बात का पालन करते हैं जो बहुमत चाहता है", "कभी-कभी उस बात का पालन करते हैं जो बहुमत चाहता है", "बहुसंख्यक क्या चाहते हैं अक्सर उसका पालन करते हैं"), 
         labels = c("Leader rarely follows the majority", "Leader sometimes follows the majority", "Leader frequently follows the majority"))

# Loyalist democracy
df_cj$obedient <- 
  factor(df_cj$obedient, 
         levels = c("अधिकांश सरकार का पालन करते हैं", "कुछ आज्ञा का पालन करते हैं और कुछ सरकार को चुनौती देते हैं", "अधिकांश सरकार को चुनौती देते हैं"), 
         labels = c("Dissidents mostly obey the gov't", "Dissidents occasionally obey the gov't", "Dissidents mostly challenge the gov't"))

# Substantive democracy (economy)
df_cj$econ <- 
  factor(df_cj$econ, 
         levels = c("अत्यधिक असमान", "कुछ हद तक असमान", "समान"), 
         labels = c("Economic equality is very low", "Economic equality is somewhat low", "Economic equality is high"))

# Substantive democracy (gender)
df_cj$gender <- 
  factor(df_cj$gender, 
         levels = c("अत्यधिक असमान", "कुछ हद तक असमान", "समान"), 
         labels = c("Gender equality is very low", "Gender equality is somewhat low", "Gender equality is high"))

# Technocratic democracy
df_cj$expert <- ifelse(df_cj$expert == "नीति पर ज़्यादा प्रभाव नहीं", "नीति पर ज़्यादा प्रभाव नहीं", df_cj$expert)
df_cj$expert <- 
  factor(df_cj$expert, 
         levels = c("नीति पर ज़्यादा प्रभाव नहीं", "नीति पर कुछ प्रभाव", "नीति पर बहुत अधिक प्रभाव"), 
         labels = c("Experts have small influence on policy", "Experts have some influence on policy", "Experts have much influence on policy"))

# Direct democracy
df_cj$direct <- 
  factor(df_cj$direct, 
         levels = c("शायद ही", "कभी-कभी", "अक्सर"),
         labels = c("Policies are rarely voted on", "Policies are sometimes voted on", "Policies are frequently voted on"))

## Incorporate respondent IDs and other covariates
df <- df %>% rename(id = ResponseId)
df_cj <- merge(df_cj, df, by = "id")

## Indicate the country
df_cj$country <- "IN"

## Export the dataset
write.csv(df_cj, "df_IN.csv", row.names = FALSE)
